如果晚上有兩場討論然後都聊了一個半小時這樣到底怎麼寫文QvQ
swift 中沒有 interface,但是 protocol 和其他語言中 interface 的概念非常相近,而且比 interface 更靈活。一般情況下,interface 只能被 class 實現。但在 swift 中,protocol 可以被很多類型採用,不論是 struct, class 或者 enum。採用 protocol 的物件需要實現特定方法或屬性,這部分的概念跟 interface 是差不多的。
而 protocol 也可以繼承自其他 protocol,例如前幾天有稍微整理過,Codabale 這個 protocol 就是由 Encodable 和 Decodable 所組成,而 Comparable 則是繼承自 Equatable,Equatable 只實現相等的操作符 ==
,但前者需要實作比大小的操作符,如 >
之類。
泛型則是 swift 中另一個重要的特性,swift 是強型態語言,強型別提供了更高的安全性,但有時候想要操作某些不知道類型的數據,就可以選擇 generics(泛型)。使用時用 <>
來表示類型參數,可以用來讓 function 或 class 接受任何類別。在使用泛型函數時,swift 可以自動推斷類型,提供了更高的靈活性以及可讀性。